package com.taobao.api.request;

import java.util.HashMap;
import java.util.Map;

import com.taobao.api.ApiRuleException;
import com.taobao.api.FileItem;
import com.taobao.api.TaobaoUploadRequest;
import com.taobao.api.internal.util.RequestCheckUtils;
import com.taobao.api.internal.util.TaobaoHashMap;
import com.taobao.api.response.JipiaoPoliciesFulladdResponse;

/**
 * TOP API: taobao.jipiao.policies.fulladd request
 * 
 * @author auto create
 * @since 1.0, 2013-08-03 16:51:00
 */
public class JipiaoPoliciesFulladdRequest implements TaobaoUploadRequest<JipiaoPoliciesFulladdResponse> {

  private TaobaoHashMap udfParams;         // add user-defined text parameters
  private Long          timestamp;

  /**
   * (ZIP压缩UTF-8编码JSON)，压缩前格式为:[{数据结构BatchPolicy的json格式},{
   * 数据结构BatchPolicy的json格式},...] 示例： [{ "attributes":
   * "rfc=1;ipt=1;fdtod=0000;ldtod=2359", "source": null, "airline": "CZ",
   * "arrAirports": "CSX,CTU,CAN", "autoHkFlag": true, "autoTicketFlag": true,
   * "cabinRules":
   * "[{\"matcher\":{\"mode\":\"ALL\",\"list\":[\"Y\"]},\"priceStrategy\":{\"mode\":\"DISCOUNT\",\"modeBaseValue\":null,\"retention\":5000,\"rebase\":-5},\"backMatcher\":null}]",
   * "changeRule": null, "dayOfWeeks": "1234", "depAirports": "PEK", "ei": "ei",
   * "excludeDate": null, "firstSaleAdvanceDay": null, "flags": null,
   * "flightInfo": "+CA1234,CZ2345", "lastSaleAdvanceDay": null, "memo":
   * "memoUpdate", "officeId": "RRR003", "outProductId":
   * "46f9b762-ea50-4c71-877b-45fa2936277e", "policyType": 8, "refundRule":
   * null, "reissueRule": null, "saleEndDate": "2013-06-19 00:00:00",
   * "saleStartDate": "2013-06-09 00:00:00", "seatInfo": null, "shareSupport":
   * false, "specialRule": null, "travelEndDate": "2013-06-19 00:00:00",
   * "travelStartDate": "2013-06-09 00:00:00" } ]
   */
  private FileItem      compressedPolicies;

  public void setCompressedPolicies(FileItem compressedPolicies) {
    this.compressedPolicies = compressedPolicies;
  }

  public FileItem getCompressedPolicies() {
    return this.compressedPolicies;
  }

  private Map<String, String> headerMap = new TaobaoHashMap();

  public Long getTimestamp() {
    return this.timestamp;
  }

  public void setTimestamp(Long timestamp) {
    this.timestamp = timestamp;
  }

  public String getApiMethodName() {
    return "taobao.jipiao.policies.fulladd";
  }

  public Map<String, String> getTextParams() {
    TaobaoHashMap txtParams = new TaobaoHashMap();
    if (this.udfParams != null) {
      txtParams.putAll(this.udfParams);
    }
    return txtParams;
  }

  public void putOtherTextParam(String key, String value) {
    if (this.udfParams == null) {
      this.udfParams = new TaobaoHashMap();
    }
    this.udfParams.put(key, value);
  }

  public Map<String, FileItem> getFileParams() {
    Map<String, FileItem> params = new HashMap<String, FileItem>();
    params.put("compressed_policies", this.compressedPolicies);
    return params;
  }

  public Class<JipiaoPoliciesFulladdResponse> getResponseClass() {
    return JipiaoPoliciesFulladdResponse.class;
  }

  public void check() throws ApiRuleException {

    RequestCheckUtils.checkNotEmpty(compressedPolicies, "compressedPolicies");
  }

  public Map<String, String> getHeaderMap() {
    return headerMap;
  }
}
